#include <iostream>
#include <string>

using namespace std;

class new_class
{
private:
    /* data */
public:
    new_class(/* args */);
    ~new_class();


public:
    int * num;
};

// 构造函数
new_class::new_class(/* args */)
{
    cout << "调用了构造函数" << endl;
    num = new int(50);
}

// 析构函数
new_class::~new_class()
{
    delete num;
    cout << "调用了析构函数 并释放了 num" << endl;
}



/*
在动态空间创建的时候
malloc 和 free 不调用 类的 构造 和 析构函数
new 和 delete 的时候 会调用 类的 构造和析构函数
*/

int main(int argc, char const *argv[])
{
    // 使用 malloc 创建空间
    new_class * class_1 = (new_class *)malloc(sizeof(new_class));

    free(class_1);
    // 使用 new 创建空间
    new_class * class_2 = new new_class;

    delete class_2;
    // cout << *class_1.num << endl;

    return 0;
}



